import axios from 'axios';
import {Message} from '@arco-design/web-vue';

const HTTP_ERROR_MESSAGES = {
    400: '请求参数错误',
    401: '请先登录',
    403: '没有操作权限',
    404: '资源不存在',
    422: '数据验证失败',
    500: '服务器错误',
    503: '服务不可用',
};
// 创建axios实例代替修改默认配置
const http = axios.create({
    withCredentials: true,
    withXSRFToken: true,
    baseURL: import.meta.env.VITE_APP_URL || window.location.origin,
    timeout: 15000,
    headers: {
        'Content-Type': 'application/json', // 明确指定内容类型
    }
});

// 请求拦截器（可按需添加）
http.interceptors.request.use(config => {
    // 可在此处添加token等通用请求头
    if (import.meta.env.APP_ENV !== 'production') {
        console.debug('Request:', config);
    }
    return config;
});

// 响应拦截器优化
http.interceptors.response.use(
    response => {
        // 生产环境移除console.log
        if (import.meta.env.APP_ENV !== 'production') {
            console.debug('API Response:', response);
        }
        return response.data;
    },
    error => {
        const response = error.response || {};
        const status = response.status || error.code;
        const message = response.data?.message
            || HTTP_ERROR_MESSAGES[status]
            || error.message
            || '网络连接异常';
        // 统一错误处理
        if (status !== 401) { // 401 特殊处理示例
            Message.error(message);
        }

        // 返回标准化错误对象
        return Promise.reject({
            status,
            message,
            data: response.data,
            config: error.config,
            isHttpError: true
        });
    }
);

export default http;
